package com.example.service;

import com.example.common.Result;
import com.example.dto.WorkScheduleDTO;
import com.example.vo.WorkScheduleVO;

import java.util.List;

/**
 * 排班服务接口
 */
public interface WorkScheduleService {
    
    /**
     * 添加排班
     */
    Result<Void> addWorkSchedule(WorkScheduleDTO workScheduleDTO);
    
    /**
     * 更新排班
     */
    Result<Void> updateWorkSchedule(Long id, WorkScheduleDTO workScheduleDTO);
    
    /**
     * 删除排班
     */
    Result<Void> deleteWorkSchedule(Long id);
    
    /**
     * 根据ID查询排班详情
     */
    Result<WorkScheduleVO> getWorkScheduleById(Long id);
    
    /**
     * 获取当前店长的排班列表
     */
    Result<List<WorkScheduleVO>> getMyWorkSchedules();
    
    /**
     * 根据星期几获取当前店长的排班列表
     */
    Result<List<WorkScheduleVO>> getMyWorkSchedulesByDay(Integer dayOfWeek);
    
    /**
     * 获取当前店长的周排班表（按星期分组）
     */
    Result<List<List<WorkScheduleVO>>> getMyWeeklySchedule();
    
    /**
     * 批量设置排班
     */
    Result<Void> batchSetWorkSchedules(List<WorkScheduleDTO> workScheduleDTOs);
    
    /**
     * 复制排班到其他天
     */
    Result<Void> copyScheduleToOtherDays(Integer fromDay, List<Integer> toDays);
    
    /**
     * 清空指定星期几的排班
     */
    Result<Void> clearScheduleByDay(Integer dayOfWeek);
    
    /**
     * 获取指定星期几的已排班时间段（用于前端时间选择过滤）
     */
    Result<List<Integer[]>> getOccupiedTimeSlots(Integer dayOfWeek);
} 